# 拓展任务一变量处理模块

def process_variables(values, variable_list=None):
    """
    将输入值与变量名对应起来
    
    参数:
    values - 从拍照识别到的数值列表
    variable_list - 学生定义的变量名列表，默认为["a", "b", "c"]
    
    返回:
    变量字典 - 变量名到值的映射
    """
    # 如果没有提供变量列表，使用默认的a,b,c
    if variable_list is None:
        variable_list = ["a", "b", "c"]
    
    # 确保有足够的值与变量对应
    if len(values) < len(variable_list):
        print(f"警告：需要{len(variable_list)}个值，但只提供了{len(values)}个")
    
    # 创建一个字典，将变量名与值对应起来
    variables_dict = {}
    for i, var_name in enumerate(variable_list):
        if i < len(values):
            try:
                variables_dict[var_name] = float(values[i])
            except ValueError:
                print(f"警告：无法将'{values[i]}'转换为数值，使用0代替")
                variables_dict[var_name] = 0
    
    # 打印变量和对应的值，方便调试
    print("变量赋值情况:")
    for var_name, value in variables_dict.items():
        print(f"{var_name} = {value}")
    
    return variables_dict

def get_local_variables(variables_dict):
    """
    获取可以用于locals().update()的变量字典
    
    参数:
    variables_dict - 变量名到值的映射
    
    返回:
    相同的变量字典，可以直接用于locals().update()
    """
    return variables_dict